package com.explment.lens.utils.secureKey;


import org.springframework.boot.SpringApplication;

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;

/**
 * 生成security密钥的两个方法，其中一个使用KeyGenerator，另一个使用SecureRandom。不需要更新securityKey时，必须注释掉
 */
public class generateSecure {

//    public static void main(String[] args) {
//        try {
//            System.out.println("SECURE_KEY: " + generateSecureKey());
//        } catch (Exception e) {
//            System.err.println("密钥生成失败: " + e.getMessage());
//        }
//    }


    // 生成256位HMAC-SHA密钥
    public static String generateSecureKey() throws NoSuchAlgorithmException {
        KeyGenerator keyGen = KeyGenerator.getInstance("HmacSHA256");
        keyGen.init(256); // 明确指定密钥长度
        SecretKey secretKey = keyGen.generateKey();
        return Base64.getUrlEncoder().withoutPadding().encodeToString(secretKey.getEncoded());
    }

    /**
     * 生成256位HMAC-SHA密钥，使用SecureRandom生成随机数种子。
     *
     * @return Base64 URL安全编码的HMAC-SHA256密钥
     * @throws NoSuchAlgorithmException 如果HmacSHA256算法不可用
     */
    public static String generateHmacSha256Key() throws NoSuchAlgorithmException {
        SecureRandom secureRandom = new SecureRandom();
        byte[] keyBytes = new byte[32]; // 256位密钥
        secureRandom.nextBytes(keyBytes);
        SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "HmacSHA256");
        return Base64.getUrlEncoder().withoutPadding().encodeToString(secretKeySpec.getEncoded());
    }
}
